'use strict';
/**
 * 此处建议只改下订单状态，保证能及时返回给第三方支付服务器成功状态
 * 限制4秒内必须执行完全部的异步回调逻辑，建议将消息发送、返佣、业绩结算等业务逻辑异步处理（如用定时任务去处理这些异步逻辑）
 * 特别注意：因为金额是前端传的，需要再判断下金额和你业务系统订单中的金额是否一致，如果不一致，直接返回 return false;
 * 特别注意：因为金额是前端传的，需要再判断下金额和你业务系统订单中的金额是否一致，如果不一致，直接返回 return false;
 * 特别注意：因为金额是前端传的，需要再判断下金额和你业务系统订单中的金额是否一致，如果不一致，直接返回 return false;
 */
module.exports = async (obj) => {
	let { data = {} } = obj;
	let {
		order_no,
		out_trade_no,
		total_fee
	} = data; // uni-pay-orders 表内的数据均可获取到
	
	
	   //根据订单号查询出对应的订单信息
	   var db = uniCloud.database();
	  var result = await db.collection('orders').where({order_no:order_no}).get({getOne:true});
	  //判断支付金额与实际金额是否一致
	  var order = result.data[0];
	  var totalPrice = order.total_fee;
	  if(totalPrice!=total_fee){
		  return false;
	  }else{
		  //更新数据库的支付结果
		  var updateData = {
			  pay_status:1,//更新成已支付
			  user_order_success:true,
			  pay_date:data.create_date,
			 'status.value':2,
			 'status.text':'已接单'
		  }
		  
			var updateResult = await db.collection('orders').where({order_no:order_no}).update(updateData);
			var orderStatus = {
					text:'已接单',
					value:2,
					create_time:new Date().getTime()
				};
			var orderPayStatus = await db.collection('order_status').where({order_no:order_no}).update({
				order_status:db.command.push(orderStatus)
			});
			const orderObject = uniCloud.importObject('order',{customUI:true});
			if(orderPayStatus.updated==1 && order.type==1){
				//分配骑手
				orderObject.allocationRider(order);
			}else if(orderPayStatus.updated==1 && order.type==3){
				orderObject.allocationRider(order,1);
			}
			
			
			
			//推送给商家打印机
			var print = uniCloud.importObject('printer',{customUI:true});
			print.startPrint(order);
			
			
			//处理商家账单表，平台佣金表和增加商家的余额
			orderObject.insertOrderStatusAndPlatformBill(order_no);
			if(updateResult.updated==1 && orderPayStatus.updated==1){
				return true;
			}else{
			 	return false;
			}
	  }

};
